#ifndef RBN_EMBRYO_GENOME_H
#define RBN_EMBRYO_GENOME_H

#include "../rbn/RbnGenome.h"
using GA::RbnGenome;

#include "EmbryoGenome.h"

namespace GA {

class RbnEmbryoGenome : public EmbryoGenome {
public:
	/* new random */
	static RbnEmbryoGenome* newRandom();

	/* dtor */
	~RbnEmbryoGenome();

	/* copy */
	Genome* copy() const;

	/* crossover*/
	Genome* crossover(Genome const& genome) const;

	/* mutate */
	void mutate(double geneMutationProbability);

	/* cell controller */
	CellController* getNewCellController() const;

private:
	RbnGenome* _rbnGenome;

	/* ctor */
	RbnEmbryoGenome(RbnGenome* rbnGenome);
	RbnEmbryoGenome(RbnEmbryoGenome const& genome);
};

} // GA

#endif // RBN_EMBRYO_GENOME_H

